// ***************************************************** // * Fonction menus déroulants 2 niveaux * // ***************************************************** // Compatible IE / NS6-7 / NS4.7 // // pour Netscape 4, mettre une taille(Hauteur, Largeur) aux tableaux dans les calques et une couleur de fond aux calques // //****************************************************** // utilisation : // Sur les liens des boutons principaux : onmouseover="showmenu('nom du calque a afficher', position horizontale en px)" onmouseout="timeoutmenu('nom du calque a afficher')" // exp : // Sur les liens des calques du premier niveau : onmouseover="showsousmenu('nom du sousmenu a afficher', 'nom du menu parent', decallage de hauteur en px par rapport au menu parent)" onmouseout="timeoutmenu('nom du sousmenu a afficher')" // exp : // Sur les liens des calques de deuxième niveau : onMouseOver="mouseondiv('nom du calque de deuxième niveau')" onMouseOut="timeoutsousmenu('nom du calque de deuxième niveau')" // exp : texte du lien var timeoutmenuID = new Array(); var activesousmenu=""; var activemenu=""; //detection du navigateur if (document.all) {strBrowser = "IE4+" }; if (document.layers) { strBrowser = "NS4" }; if (document.getElementById && !document.all) {strBrowser= "NS6" }; function showmenu(nommenu, posit) { if(activemenu && activemenu != nommenu) {hidemenu(activemenu)} activemenu=nommenu switch (strBrowser) { case "NS4": winW = window.innerWidth; winH = window.innerHeight; calleft=8; if(calleft>=0) {calleft=Math.round(calleft/2)-15;} else {calleft=0; } calleft=calleft+posit; document[nommenu].left=calleft+5; document[nommenu].top=84; document[nommenu].visibility="show"; // vsize=document[nommenu].clip.bottom // document[nommenu].clip.bottom=0 // slidemenu(nommenu, vsize) break case "NS6" : if(document.getElementById(nommenu).style.visibility=="hidden") { winW = window.innerWidth; winH = window.innerHeight; calleft=8; if(window.innerHeight=0) {calleft=Math.round(calleft/2);} else {calleft=0; } calleft=calleft+posit; document.getElementById(nommenu).style.left=calleft; document.getElementById(nommenu).style.top=84; document.getElementById(nommenu).style.visibility="visible"; // vsize=document.getElementById(nommenu).offsetHeight; // document.getElementById(nommenu).style.height=0 // slidemenu(nommenu, vsize) } else {mouseondiv(nommenu)} break case "IE4+": if(document.all[nommenu].style.visibility=="hidden") { winW = document.body.clientWidth; winH = document.body.offsetHeight; calleft=8; if(calleft>=0) {calleft=Math.round(calleft/2);} else {calleft=0;} calleft=calleft+posit; document.all[nommenu].style.left=calleft; document.all[nommenu].style.top=84; // document.all[nommenu].style.pixelHeight=0 document.all[nommenu].style.visibility="visible"; // slidemenu(nommenu, document.all[nommenu].offsetHeight) } else {mouseondiv(nommenu)} break } } function showsousmenu(nommenu, nomparent, tdactif, nomlienactif, hsup) { mouseondiv(nomparent) switch (strBrowser) { case "NS4": if(activesousmenu) {hidemenu(activesousmenu)} clearTimeout(timeoutmenuID[nomparent]) if(nommenu){ clearTimeout(timeoutmenuID[nommenu]) activesousmenu=nommenu; document[nommenu].par1=new String(nomparent) document[nommenu].visibility="show" document[nommenu].left=document[nomparent].left+document[nomparent].clip.right-4 document[nommenu].top=document[nomparent].top+hsup} break case "NS6" : if(activesousmenu) {hidemenu(activesousmenu)} clearTimeout(timeoutmenuID[nomparent]) tdactif.bgColor="#FFFFFF" document.getElementById(nomlienactif).style.color="#000000" if(nommenu){ clearTimeout(timeoutmenuID[nommenu]) activesousmenu=nommenu; document.getElementById(nommenu).par1=nomparent document.getElementById(nommenu).style.visibility="visible" document.getElementById(nommenu).style.left=parseInt(document.getElementById(nomparent).style.left)+document.getElementById(nomparent).offsetWidth document.getElementById(nommenu).style.top=parseInt(document.getElementById(nomparent).style.top)+hsup} break case "IE4+": if(activesousmenu) {hidemenu(activesousmenu)} clearTimeout(timeoutmenuID[nomparent]) tdactif.bgColor="#FFFFFF" document.all[nomlienactif].style.color="#000000" if(nommenu){ clearTimeout(timeoutmenuID[nommenu]) activesousmenu=nommenu; document.all[nommenu].par1=nomparent document.all[nommenu].style.visibility="visible" document.all[nommenu].style.left=document.all[nomparent].style.pixelLeft+document.all[nomparent].offsetWidth document.all[nommenu].style.top=document.all[nomparent].style.pixelTop+hsup} break } } function slidemenu(nommenu, maxheight) { switch (strBrowser) { case "NS4": if(document[nommenu].clip.bottom<=maxheight) { document[nommenu].clip.bottom+=10; window.setTimeout("slidemenu('"+nommenu+"', '"+maxheight+"')", 100) } else { document[nommenu].clip.bottom=maxheight; } break case "NS6" : if(document.getElementById(nommenu).offsetHeight<=maxheight) { document.getElementById(nommenu).style.height=document.getElementById(nommenu).offsetHeight+10; window.setTimeout("slidemenu('"+nommenu+"', '"+maxheight+"')", 100) } else { document.getElementById(nommenu).style.height=maxheight; } break case "IE4+": if(document.all[nommenu].style.pixelHeight<=maxheight) { document.all[nommenu].style.pixelHeight+=10; window.setTimeout("slidemenu('"+nommenu+"', '"+maxheight+"')", 50) } break } } function timeoutmenu(nommenu, tdactif, nomlienactif) { switch (strBrowser) { case "NS4": if(document[nommenu].par1) {timeoutmenu(document[nommenu].par1)} break case "NS6" : if(tdactif) { tdactif.bgColor=tdactif.parentNode.parentNode.parentNode.bgColor document.getElementById(nomlienactif).style.color="#FFFFFF" } if(document.getElementById(nommenu).par1) {timeoutmenu(document.getElementById(nommenu).par1)} break case "IE4+": if(tdactif) { tdactif.bgColor=tdactif.parentElement.parentElement.bgColor document.all[nomlienactif].style.color="#FFFFFF" } if(document.all[nommenu].par1) {timeoutmenu(document.all[nommenu].par1)} break } timeoutmenuID[nommenu]=window.setTimeout("hidemenu('"+nommenu+"')", 500); } function timeoutsousmenu(nommenu) { timeoutmenuID[nommenu]=window.setTimeout("hidemenu('"+nommenu+"')", 500); switch (strBrowser) { case "NS4": if(document[nommenu].par1) {timeoutmenuID[document[nommenu].par1]=window.setTimeout("hidemenu('"+document[nommenu].par1+"')", 500);} break case "NS6" : if(document.getElementById(nommenu).par1) {timeoutmenuID[document.getElementById(nommenu).par1]=window.setTimeout("hidemenu('"+document.getElementById(nommenu).par1+"')", 500);} break case "IE4+": if(document.all[nommenu].par1) { timeoutmenuID[document.all[nommenu].par1]=window.setTimeout("hidemenu('"+document.all[nommenu].par1+"')", 500); } break } } function mouseondiv(nommenu) { clearTimeout(timeoutmenuID[nommenu]) switch (strBrowser) { case "NS4": if(document[nommenu].par1) {clearTimeout(timeoutmenuID[document[nommenu].par1]);} break case "NS6" : if(document.getElementById(nommenu).par1) {clearTimeout(timeoutmenuID[document.getElementById(nommenu).par1]);} break case "IE4+": if(document.all[nommenu].par1) { clearTimeout(timeoutmenuID[document.all[nommenu].par1]) } break } } function hidemenu(nommenu) { switch (strBrowser) { case "NS4": document[nommenu].visibility="hidden"; break case "NS6" : document.getElementById(nommenu).style.visibility="hidden"; break case "IE4+": document.all[nommenu].style.visibility="hidden"; break } }